#ifndef _CLUSTER_H
#define _CLUSTER_H

#include "Sample.h"
#include "Distance.h"

#include <vector>

using namespace std;

class SampleSpace;

class Cluster {
public:
    virtual void cluster(vector<Sample *> &sampleList) = 0;

    SampleSpace & getSampleSpace() {
        return m_sampleSpace;
    }

    virtual ~Cluster(void) {
    }

protected:
    SampleSpace &m_sampleSpace;

    /**
     * @param sampleSpace context, to assure that s_dim of Sample is fixed
     */
    Cluster(SampleSpace &sampleSpace): m_sampleSpace(sampleSpace) {
    }

};

#endif
